﻿//////////////////////////////////////////////////////////////////////////////
//
// Copyright © 1998-2024 Glodon Company Limited.
//
// Licensed under the MIT License
//
// Permission is hereby granted, free of charge, to any person obtaining a
// copy of this software and associated documentation files (the “Software”),
// to deal in the Software without restriction, including without limitation
// the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
// sell copies of the Software, and to permit persons to whom the Software is
// furnished to do so, subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in
// all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
// THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
//
//////////////////////////////////////////////////////////////////////////////
#include "BuiltInParameterDisplayCreator.h"
#include "GbmpBuiltInParameterDefinitions.h"
#include "ParameterDisplayManager.h"
#include "IBuiltInParameterDisplayCreator.h"
#include "IParameterDefinitionLibrary.h"
#include "IParameterValueList.h"
#include "IParameterValueDisplayString.h"
#include "IParameterValueInt.h"
#include "ModelViewEnums.h"
#include "IModelView.h"
#include "EnableCompileWarning_The_LAST_IncludeInCpp.h"

namespace gcmp 
{
    namespace BuiltInParameterDisplayCreators
    {
        // Element

        ADD_GCMP_DYNAMIC_VALUE_LIST_PARAMETER_DISPLAY(ViewWorkLevelBuiltInParameter, ParameterDocumentLevelList);
        ADD_GCMP_DYNAMIC_VALUE_LIST_PARAMETER_DISPLAY(RoofSlopeArrowTailAssociatedLevelBuiltInParameter, ParameterDocumentLevelList);
        ADD_GCMP_DYNAMIC_VALUE_LIST_PARAMETER_DISPLAY(RoofSlopeArrowHeadAssociatedLevelBuiltInParameter, ParameterDocumentLevelList);


        // ModelView
        ADD_GCMP_DYNAMIC_VALUE_LIST_PARAMETER_DISPLAY(ViewScaleBuiltInParameter, ParameterViewScaleList);

        ADD_GCMP_DYNAMIC_VALUE_LIST_PARAMETER_DISPLAY(FormSubCategoryBuiltInParameter, ParameterSubCategoryList);

        ParameterValueDisplayStrings GetElevationSysmbolValueList()
        {
            ParameterValueDisplayStrings res;
            res.emplace_back(IParameterValueDisplayString::CreateParameterValueDisplayString(IParameterValueInt::Create(1), GBMP_TR(L"上标头"))); // 1 = (int32_t)LevelSymbol::UpperHeader
            res.emplace_back(IParameterValueDisplayString::CreateParameterValueDisplayString(IParameterValueInt::Create(2), GBMP_TR(L"下标头"))); // 2 = (int32_t)LevelSymbol::LowerHeader
            return res;
        }
        ADD_STATIC_VALUE_LIST_PARAMETER_DISPLAY(LevelSymbolBuiltInParameter, GetElevationSysmbolValueList());

        ParameterValueDisplayStrings GetModelViewDisplayModeValueList()
        {
            ParameterValueDisplayStrings res;
            ModelViewDisplayOptions displayOptions;

            displayOptions.HasLight = true;
            displayOptions.HasMaterial = true;
            res.emplace_back(IParameterValueDisplayString::CreateParameterValueDisplayString(IParameterValueInt::Create(IModelView::ConvertDisplayModeAndOptionsToInt(ModelViewDisplayMode::Solid, displayOptions)), GBMP_TR(L"着色：有光照，有材质")));

            displayOptions.HasLight = false;
            displayOptions.HasMaterial = false;
            res.emplace_back(IParameterValueDisplayString::CreateParameterValueDisplayString(IParameterValueInt::Create(IModelView::ConvertDisplayModeAndOptionsToInt(ModelViewDisplayMode::Solid, displayOptions)), GBMP_TR(L"着色：无光照，无材质")));

            displayOptions.HasLight = true;
            displayOptions.HasMaterial = false;
            res.emplace_back(IParameterValueDisplayString::CreateParameterValueDisplayString(IParameterValueInt::Create(IModelView::ConvertDisplayModeAndOptionsToInt(ModelViewDisplayMode::Solid, displayOptions)), GBMP_TR(L"着色：有光照，无材质")));

            displayOptions.HasLight = false;
            displayOptions.HasMaterial = true;
            res.emplace_back(IParameterValueDisplayString::CreateParameterValueDisplayString(IParameterValueInt::Create(IModelView::ConvertDisplayModeAndOptionsToInt(ModelViewDisplayMode::Solid, displayOptions)), GBMP_TR(L"着色：无光照，有材质")));

            res.emplace_back(IParameterValueDisplayString::CreateParameterValueDisplayString(IParameterValueInt::Create(IModelView::ConvertDisplayModeAndOptionsToInt(ModelViewDisplayMode::HiddenLine, displayOptions)), GBMP_TR(L"消隐线")));

            res.emplace_back(IParameterValueDisplayString::CreateParameterValueDisplayString(IParameterValueInt::Create(IModelView::ConvertDisplayModeAndOptionsToInt(ModelViewDisplayMode::Wireframe, displayOptions)), GBMP_TR(L"线框")));

            return res;
        }
        ADD_STATIC_VALUE_LIST_PARAMETER_DISPLAY(ViewDisplayModeBuiltInParameter, GetModelViewDisplayModeValueList());

        ParameterValueDisplayStrings GetSlopeArrowDataFormatValueList()
        {
            ParameterValueDisplayStrings res;
            res.emplace_back(IParameterValueDisplayString::CreateParameterValueDisplayString(IParameterValueInt::Create(0), GBMP_TR(L"尾高")));
            res.emplace_back(IParameterValueDisplayString::CreateParameterValueDisplayString(IParameterValueInt::Create(1), GBMP_TR(L"坡度")));
            return res;
        }
        ADD_STATIC_VALUE_LIST_PARAMETER_DISPLAY(RoofSlopeArrowDataFormatBuiltInParameter, GetSlopeArrowDataFormatValueList());

        ParameterValueDisplayStrings GetStairInsertPointLocationValueList()
        {
            ParameterValueDisplayStrings res;
            res.emplace_back(IParameterValueDisplayString::CreateParameterValueDisplayString(IParameterValueInt::Create(0), GBMP_TR(L"底部左下角")));
            res.emplace_back(IParameterValueDisplayString::CreateParameterValueDisplayString(IParameterValueInt::Create(1), GBMP_TR(L"平台外角")));
            res.emplace_back(IParameterValueDisplayString::CreateParameterValueDisplayString(IParameterValueInt::Create(2), GBMP_TR(L"顶部左上角")));
            return res;
        }
        ADD_STATIC_VALUE_LIST_PARAMETER_DISPLAY(StairInsertPointBuiltInParameter, GetStairInsertPointLocationValueList());

        ParameterValueDisplayStrings GetStairRiserTypeValueList()
        {
            ParameterValueDisplayStrings res;
            res.emplace_back(IParameterValueDisplayString::CreateParameterValueDisplayString(IParameterValueInt::Create(0), GBMP_TR(L"垂直")));
            res.emplace_back(IParameterValueDisplayString::CreateParameterValueDisplayString(IParameterValueInt::Create(1), GBMP_TR(L"倾斜")));
            res.emplace_back(IParameterValueDisplayString::CreateParameterValueDisplayString(IParameterValueInt::Create(2), GBMP_TR(L"无")));

            return res;
        }
        ADD_STATIC_VALUE_LIST_PARAMETER_DISPLAY(StairRiserTypeBuiltInParameter, GetStairRiserTypeValueList());

        ParameterValueDisplayStrings GetStairBeamTypeValueList()
        {
            ParameterValueDisplayStrings res;
            res.emplace_back(IParameterValueDisplayString::CreateParameterValueDisplayString(IParameterValueInt::Create(0), GBMP_TR(L"封闭")));
            res.emplace_back(IParameterValueDisplayString::CreateParameterValueDisplayString(IParameterValueInt::Create(1), GBMP_TR(L"开放")));
            return res;
        }
        ADD_STATIC_VALUE_LIST_PARAMETER_DISPLAY(StairBeamTypeBuiltInParameter, GetStairBeamTypeValueList());

        ParameterValueDisplayStrings GetRailingStairAlignmentTypeValueList()
        {
            ParameterValueDisplayStrings res;
            res.emplace_back(IParameterValueDisplayString::CreateParameterValueDisplayString(IParameterValueInt::Create(0), GBMP_TR(L"转角处固定立柱")));
            res.emplace_back(IParameterValueDisplayString::CreateParameterValueDisplayString(IParameterValueInt::Create(1), GBMP_TR(L"对齐栏杆到踏步")));
            return res;
        }
        //RailingStairAlignmentTypeBuiltInParameter是否已经停用？
        ADD_STATIC_VALUE_LIST_PARAMETER_DISPLAY(RailingStairAlignmentTypeBuiltInParameter, GetRailingStairAlignmentTypeValueList());

        ParameterValueDisplayStrings GetRailingTrimNewelLocationValueList()
        {
            ParameterValueDisplayStrings res;
            res.emplace_back(IParameterValueDisplayString::CreateParameterValueDisplayString(IParameterValueInt::Create(0), GBMP_TR(L"从不")));
            res.emplace_back(IParameterValueDisplayString::CreateParameterValueDisplayString(IParameterValueInt::Create(1), GBMP_TR(L"每段扶手末端")));
            res.emplace_back(IParameterValueDisplayString::CreateParameterValueDisplayString(IParameterValueInt::Create(2), GBMP_TR(L"角度大于")));
            return res;
        }
        ADD_STATIC_VALUE_LIST_PARAMETER_DISPLAY(RailingTrimLocationBuiltInParameter, GetRailingTrimNewelLocationValueList());

        ParameterValueDisplayStrings GetRailingAlignmentTypeValueList()
        {
            ParameterValueDisplayStrings res;
            res.emplace_back(IParameterValueDisplayString::CreateParameterValueDisplayString(IParameterValueInt::Create(0), GBMP_TR(L"起点对齐")));
            res.emplace_back(IParameterValueDisplayString::CreateParameterValueDisplayString(IParameterValueInt::Create(1), GBMP_TR(L"中心对齐")));
            res.emplace_back(IParameterValueDisplayString::CreateParameterValueDisplayString(IParameterValueInt::Create(2), GBMP_TR(L"终点对齐")));
            res.emplace_back(IParameterValueDisplayString::CreateParameterValueDisplayString(IParameterValueInt::Create(3), GBMP_TR(L"展开样式以匹配")));
            return res;
        }
         ADD_STATIC_VALUE_LIST_PARAMETER_DISPLAY(RailingAlignmentTypeBuiltInParameter, GetRailingAlignmentTypeValueList());

        //PDT_Display_FORM_END_CUT_STYLE是否已经停用？
        ParameterValueDisplayStrings GetFormEndCutStyleValueList()
        {
            ParameterValueDisplayStrings res;
            res.emplace_back(IParameterValueDisplayString::CreateParameterValueDisplayString(IParameterValueInt::Create(0), GBMP_TR(L"垂直于轴线")));
            res.emplace_back(IParameterValueDisplayString::CreateParameterValueDisplayString(IParameterValueInt::Create(1), GBMP_TR(L"水平")));
            res.emplace_back(IParameterValueDisplayString::CreateParameterValueDisplayString(IParameterValueInt::Create(2), GBMP_TR(L"竖直")));
            return res;
        }

        ParameterValueDisplayStrings GetColumnTypeValueList()
        {
            ParameterValueDisplayStrings res;
            res.emplace_back(IParameterValueDisplayString::CreateParameterValueDisplayString(IParameterValueInt::Create(0), GBMP_TR(L"直柱")));
            res.emplace_back(IParameterValueDisplayString::CreateParameterValueDisplayString(IParameterValueInt::Create(1), GBMP_TR(L"String_Column_Direction_Slanted")));
            return res;
        }
        ADD_STATIC_VALUE_LIST_PARAMETER_DISPLAY(ColumnLayingTypeBuiltInParameter, GetColumnTypeValueList());

        ParameterValueDisplayStrings GetColumnStructureTypeValueList()
        {
            ParameterValueDisplayStrings res;
            res.emplace_back(IParameterValueDisplayString::CreateParameterValueDisplayString(IParameterValueInt::Create(0), GBMP_TR(L"框架柱")));
            res.emplace_back(IParameterValueDisplayString::CreateParameterValueDisplayString(IParameterValueInt::Create(1), GBMP_TR(L"构造柱")));
            return res;
        }
        ADD_STATIC_VALUE_LIST_PARAMETER_DISPLAY(ColumnStructureTypeBuiltInParameter, GetColumnStructureTypeValueList());

        ParameterValueDisplayStrings GetBeamStructureTypeValueList()
        {
            ParameterValueDisplayStrings res;
            res.emplace_back(IParameterValueDisplayString::CreateParameterValueDisplayString(IParameterValueInt::Create(0), GBMP_TR(L"框架梁")));
            res.emplace_back(IParameterValueDisplayString::CreateParameterValueDisplayString(IParameterValueInt::Create(1), GBMP_TR(L"二次结构梁")));
            return res;
        }
        ADD_STATIC_VALUE_LIST_PARAMETER_DISPLAY(BeamStructureTypeBuiltInParameter, GetBeamStructureTypeValueList());

        ParameterValueDisplayStrings GetWallStructureTypeValueList()
        {
            ParameterValueDisplayStrings res;
            res.emplace_back(IParameterValueDisplayString::CreateParameterValueDisplayString(IParameterValueInt::Create(0), GBMP_TR(L"剪力墙")));
            res.emplace_back(IParameterValueDisplayString::CreateParameterValueDisplayString(IParameterValueInt::Create(1), GBMP_TR(L"砌体墙")));
            res.emplace_back(IParameterValueDisplayString::CreateParameterValueDisplayString(IParameterValueInt::Create(2), GBMP_TR(L"现浇混凝土")));
            return res;
        }
        ADD_STATIC_VALUE_LIST_PARAMETER_DISPLAY(WallStructureTypeBuiltInParameter, GetWallStructureTypeValueList());

        ParameterValueDisplayStrings GetFloorAlignPlaneValueList()
        {
            ParameterValueDisplayStrings res;
            res.emplace_back(IParameterValueDisplayString::CreateParameterValueDisplayString(IParameterValueInt::Create(0), GBMP_TR(L"顶部")));
            res.emplace_back(IParameterValueDisplayString::CreateParameterValueDisplayString(IParameterValueInt::Create(1), GBMP_TR(L"底部")));
            return res;
        }
        ADD_STATIC_VALUE_LIST_PARAMETER_DISPLAY(FloorAlignPlaneBuiltInParameter, GetFloorAlignPlaneValueList());

        ParameterValueDisplayStrings GetModelViewDetailLevelValueList()
        {
            ParameterValueDisplayStrings res;
            res.emplace_back(IParameterValueDisplayString::CreateParameterValueDisplayString(IParameterValueInt::Create(0), GBMP_TR(L"粗略")));
            res.emplace_back(IParameterValueDisplayString::CreateParameterValueDisplayString(IParameterValueInt::Create(1), GBMP_TR(L"中等")));
            res.emplace_back(IParameterValueDisplayString::CreateParameterValueDisplayString(IParameterValueInt::Create(2), GBMP_TR(L"精细")));
            return res;
        }
        ADD_STATIC_VALUE_LIST_PARAMETER_DISPLAY(ModelViewDetailLevelBuiltInParameter, GetModelViewDetailLevelValueList());


        ParameterValueDisplayStrings GetProjectReferenceTypeValueList()
        {
            ParameterValueDisplayStrings res;
            res.emplace_back(IParameterValueDisplayString::CreateParameterValueDisplayString(IParameterValueInt::Create(0), GBMP_TR(L"非参照")));
            res.emplace_back(IParameterValueDisplayString::CreateParameterValueDisplayString(IParameterValueInt::Create(1), GBMP_TR(L"弱参照")));
            res.emplace_back(IParameterValueDisplayString::CreateParameterValueDisplayString(IParameterValueInt::Create(2), GBMP_TR(L"强参照")));
            res.emplace_back(IParameterValueDisplayString::CreateParameterValueDisplayString(IParameterValueInt::Create(3), GBMP_TR(L"前后中心")));
            res.emplace_back(IParameterValueDisplayString::CreateParameterValueDisplayString(IParameterValueInt::Create(4), GBMP_TR(L"左右中心")));
            res.emplace_back(IParameterValueDisplayString::CreateParameterValueDisplayString(IParameterValueInt::Create(5), GBMP_TR(L"上下中心")));
            res.emplace_back(IParameterValueDisplayString::CreateParameterValueDisplayString(IParameterValueInt::Create(6), GBMP_TR(L"前")));
            res.emplace_back(IParameterValueDisplayString::CreateParameterValueDisplayString(IParameterValueInt::Create(7), GBMP_TR(L"后")));
            res.emplace_back(IParameterValueDisplayString::CreateParameterValueDisplayString(IParameterValueInt::Create(8), GBMP_TR(L"左")));
            res.emplace_back(IParameterValueDisplayString::CreateParameterValueDisplayString(IParameterValueInt::Create(9), GBMP_TR(L"右")));
            res.emplace_back(IParameterValueDisplayString::CreateParameterValueDisplayString(IParameterValueInt::Create(10), GBMP_TR(L"顶")));
            res.emplace_back(IParameterValueDisplayString::CreateParameterValueDisplayString(IParameterValueInt::Create(11), GBMP_TR(L"底")));
            return res;
        }
        ADD_STATIC_VALUE_LIST_PARAMETER_DISPLAY(ReferencePlaneProjectRefTypeBuiltInParameter, GetProjectReferenceTypeValueList());

        ParameterValueDisplayStrings GetRefLineProjectReferenceTypeValueList()
        {
            ParameterValueDisplayStrings res;
            res.emplace_back(IParameterValueDisplayString::CreateParameterValueDisplayString(IParameterValueInt::Create(0), GBMP_TR(L"非参照")));
            res.emplace_back(IParameterValueDisplayString::CreateParameterValueDisplayString(IParameterValueInt::Create(1), GBMP_TR(L"弱参照")));
            res.emplace_back(IParameterValueDisplayString::CreateParameterValueDisplayString(IParameterValueInt::Create(2), GBMP_TR(L"强参照")));
            return res;
        }
        ADD_STATIC_VALUE_LIST_PARAMETER_DISPLAY(ReferenceLineProjectRefTypeBuiltInParameter, GetRefLineProjectReferenceTypeValueList());

        ADD_GCMP_DYNAMIC_VALUE_LIST_PARAMETER_DISPLAY(FormProfileFamilyBuiltInParameter, ParameterProfileFamilyTypeList);
        ADD_GCMP_DYNAMIC_VALUE_LIST_PARAMETER_DISPLAY(FormProfileFamilyBuiltInParameter1, ParameterProfileFamilyTypeList);

        ParameterValueDisplayStrings GetConduitConnectorSystemTypeValueList()
        {
            ParameterValueDisplayStrings res;
            res.emplace_back(IParameterValueDisplayString::CreateParameterValueDisplayString(IParameterValueInt::Create(-1), GBMP_TR(L"不限")));
            return res;
        }
        ADD_STATIC_VALUE_LIST_PARAMETER_DISPLAY(WirePipeConnectorSystemTypeBuiltInParameter, GetConduitConnectorSystemTypeValueList());

        ParameterValueDisplayStrings GetElectricalSystemTypeValueList()
        {
            ParameterValueDisplayStrings res;
            // 机电产品端要求不显示“未定义”
            res.emplace_back(IParameterValueDisplayString::CreateParameterValueDisplayString(IParameterValueInt::Create(41/*ElectricalSystemType::Lighting*/), GBMP_TR(L"照明")));
            res.emplace_back(IParameterValueDisplayString::CreateParameterValueDisplayString(IParameterValueInt::Create(42/*ElectricalSystemType::PowerSupplyAndDistribution*/), GBMP_TR(L"供配电")));
            res.emplace_back(IParameterValueDisplayString::CreateParameterValueDisplayString(IParameterValueInt::Create(43/*ElectricalSystemType::LightningProtectionGrounding*/), GBMP_TR(L"防雷接地")));
            res.emplace_back(IParameterValueDisplayString::CreateParameterValueDisplayString(IParameterValueInt::Create(51/*ElectricalSystemType::WeakCurrent*/), GBMP_TR(L"弱电")));
            res.emplace_back(IParameterValueDisplayString::CreateParameterValueDisplayString(IParameterValueInt::Create(52/*ElectricalSystemType::FireAlarm*/), GBMP_TR(L"火灾自动报警")));
            res.emplace_back(IParameterValueDisplayString::CreateParameterValueDisplayString(IParameterValueInt::Create(59/*ElectricalSystemType::OtherElectrical*/), GBMP_TR(L"其它")));
            res.emplace_back(IParameterValueDisplayString::CreateParameterValueDisplayString(IParameterValueInt::Create(60/*ElectricalSystemType::GlobalElectricity*/), GBMP_TR(L"不限")));
            return res;
        }
        ADD_STATIC_VALUE_LIST_PARAMETER_DISPLAY(ElectricalSystemTypeBuiltInParameter, GetElectricalSystemTypeValueList());

        ParameterValueDisplayStrings GetCableTraySystemTypeValueList()
        {
            ParameterValueDisplayStrings res;
            res.emplace_back(IParameterValueDisplayString::CreateParameterValueDisplayString(IParameterValueInt::Create(-1), GBMP_TR(L"不限")));
            return res;
        }
        ADD_STATIC_VALUE_LIST_PARAMETER_DISPLAY(CableTrayConnectorSystemTypeBuiltInParameter, GetCableTraySystemTypeValueList());

        ParameterValueDisplayStrings GetWaterPipeConnectorSystemTypeValueList()
        {
            ParameterValueDisplayStrings res;
            // 机电产品端要求不显示“未定义”
            res.emplace_back(IParameterValueDisplayString::CreateParameterValueDisplayString(IParameterValueInt::Create(11/*WaterSystemType::SupplyHydronic*/), GBMP_TR(L"循环供水")));
            res.emplace_back(IParameterValueDisplayString::CreateParameterValueDisplayString(IParameterValueInt::Create(12/*WaterSystemType::ReturnHydronic*/), GBMP_TR(L"循环回水")));
            res.emplace_back(IParameterValueDisplayString::CreateParameterValueDisplayString(IParameterValueInt::Create(13/*WaterSystemType::RefrigerantPipe*/), GBMP_TR(L"冷媒管")));
            res.emplace_back(IParameterValueDisplayString::CreateParameterValueDisplayString(IParameterValueInt::Create(14/*WaterSystemType::CondenserPipe*/), GBMP_TR(L"冷凝水")));
            res.emplace_back(IParameterValueDisplayString::CreateParameterValueDisplayString(IParameterValueInt::Create(21/*WaterSystemType::WaterSupply*/), GBMP_TR(L"给水")));
            res.emplace_back(IParameterValueDisplayString::CreateParameterValueDisplayString(IParameterValueInt::Create(22/*WaterSystemType::SupplyHotWater*/), GBMP_TR(L"热给水")));
            res.emplace_back(IParameterValueDisplayString::CreateParameterValueDisplayString(IParameterValueInt::Create(23/*WaterSystemType::ReturnHotWater*/), GBMP_TR(L"热回水")));
            res.emplace_back(IParameterValueDisplayString::CreateParameterValueDisplayString(IParameterValueInt::Create(24/*WaterSystemType::Drainage*/), GBMP_TR(L"排水")));
            res.emplace_back(IParameterValueDisplayString::CreateParameterValueDisplayString(IParameterValueInt::Create(25/*WaterSystemType::Vent*/), GBMP_TR(L"通气")));
            res.emplace_back(IParameterValueDisplayString::CreateParameterValueDisplayString(IParameterValueInt::Create(26/*WaterSystemType::FireHyrant*/), GBMP_TR(L"消火栓")));
            res.emplace_back(IParameterValueDisplayString::CreateParameterValueDisplayString(IParameterValueInt::Create(27/*WaterSystemType::FireProtectSprinkler*/), GBMP_TR(L"自动喷水")));
            res.emplace_back(IParameterValueDisplayString::CreateParameterValueDisplayString(IParameterValueInt::Create(28/*WaterSystemType::FireProtectDry*/), GBMP_TR(L"干式消防")));
            res.emplace_back(IParameterValueDisplayString::CreateParameterValueDisplayString(IParameterValueInt::Create(29/*WaterSystemType::FireProtectGas*/), GBMP_TR(L"气体灭火")));
            res.emplace_back(IParameterValueDisplayString::CreateParameterValueDisplayString(IParameterValueInt::Create(39/*WaterSystemType::OtherPipe*/), GBMP_TR(L"其它")));
            res.emplace_back(IParameterValueDisplayString::CreateParameterValueDisplayString(IParameterValueInt::Create(40/*WaterSystemType::Global*/), GBMP_TR(L"不限")));
            return res;
        }
        ADD_STATIC_VALUE_LIST_PARAMETER_DISPLAY(WaterPipeConnectorSystemTypeBuiltInParameter, GetWaterPipeConnectorSystemTypeValueList());

        ParameterValueDisplayStrings GetVentilatingPipeConnectorSystemTypeValueList()
        {
            ParameterValueDisplayStrings res;
            // 机电产品端要求不显示“未定义”
            res.emplace_back(IParameterValueDisplayString::CreateParameterValueDisplayString(IParameterValueInt::Create(1/*VentilatingSystemType::SupplyAir*/), GBMP_TR(L"送风")));
            res.emplace_back(IParameterValueDisplayString::CreateParameterValueDisplayString(IParameterValueInt::Create(2/*VentilatingSystemType::ReturnAir*/), GBMP_TR(L"回风")));
            res.emplace_back(IParameterValueDisplayString::CreateParameterValueDisplayString(IParameterValueInt::Create(3/*VentilatingSystemType::FreshAir*/), GBMP_TR(L"新风")));
            res.emplace_back(IParameterValueDisplayString::CreateParameterValueDisplayString(IParameterValueInt::Create(4/*VentilatingSystemType::ExhaustAir*/), GBMP_TR(L"排风")));
            res.emplace_back(IParameterValueDisplayString::CreateParameterValueDisplayString(IParameterValueInt::Create(9/*VentilatingSystemType::OtherAir*/), GBMP_TR(L"其它")));
            res.emplace_back(IParameterValueDisplayString::CreateParameterValueDisplayString(IParameterValueInt::Create(10/*VentilatingSystemType::Global*/), GBMP_TR(L"不限")));
            return res;
        }
        ADD_STATIC_VALUE_LIST_PARAMETER_DISPLAY(VentilatingPipeConnectorSystemTypeBuiltInParameter, GetVentilatingPipeConnectorSystemTypeValueList());

        ParameterValueDisplayStrings GetMEPConnectorFlowDirectionTypeValueList()
        {
            ParameterValueDisplayStrings res;
            res.emplace_back(IParameterValueDisplayString::CreateParameterValueDisplayString(IParameterValueInt::Create(0), GBMP_TR(L"双向")));
            res.emplace_back(IParameterValueDisplayString::CreateParameterValueDisplayString(IParameterValueInt::Create(1), GBMP_TR(L"进")));
            res.emplace_back(IParameterValueDisplayString::CreateParameterValueDisplayString(IParameterValueInt::Create(2), GBMP_TR(L"出")));
            return res;
        }
        ADD_STATIC_VALUE_LIST_PARAMETER_DISPLAY(MEPConnectorFlowDirectionTypeBuiltInParameter, GetMEPConnectorFlowDirectionTypeValueList());

        ParameterValueDisplayStrings GetVentilatingPipeConnectorShapTypeValueList()
        {
            ParameterValueDisplayStrings res;
            res.emplace_back(IParameterValueDisplayString::CreateParameterValueDisplayString(IParameterValueInt::Create(0), GBMP_TR(L"矩形")));
            res.emplace_back(IParameterValueDisplayString::CreateParameterValueDisplayString(IParameterValueInt::Create(1), GBMP_TR(L"圆形")));
            res.emplace_back(IParameterValueDisplayString::CreateParameterValueDisplayString(IParameterValueInt::Create(2), GBMP_TR(L"椭圆")));
            return res;
        }
        ADD_STATIC_VALUE_LIST_PARAMETER_DISPLAY(VentilatingPipeConnectorShapTypeBuiltInParameter, GetVentilatingPipeConnectorShapTypeValueList());

        ParameterValueDisplayStrings GetHighFormworkMarkList( )
        {
            ParameterValueDisplayStrings res;
            res.emplace_back(IParameterValueDisplayString::CreateParameterValueDisplayString(IParameterValueInt::Create(0), GBMP_TR(L"否")));
            res.emplace_back(IParameterValueDisplayString::CreateParameterValueDisplayString(IParameterValueInt::Create(1), GBMP_TR(L"危大支模")));
            res.emplace_back(IParameterValueDisplayString::CreateParameterValueDisplayString(IParameterValueInt::Create(2), GBMP_TR(L"超危大支模")));
            return res;
        }
        ADD_STATIC_VALUE_LIST_PARAMETER_DISPLAY(IsHighFormworkBuiltInParameter, GetHighFormworkMarkList( ));


        ParameterValueDisplayStrings GetWorkyardWallPointStyleMarkList()
        {
            ParameterValueDisplayStrings res;
            res.emplace_back(IParameterValueDisplayString::CreateParameterValueDisplayString(IParameterValueInt::Create(0), GBMP_TR(L"样式1")));
            res.emplace_back(IParameterValueDisplayString::CreateParameterValueDisplayString(IParameterValueInt::Create(1), GBMP_TR(L"样式2")));
            return res;
        }
        ADD_STATIC_VALUE_LIST_PARAMETER_DISPLAY(WorkyardWallPointStyleBuiltInParameter, GetWorkyardWallPointStyleMarkList());

        ParameterValueDisplayStrings GetMaterialDisplayStyleValueList()
        {
            ParameterValueDisplayStrings res;
            res.emplace_back(IParameterValueDisplayString::CreateParameterValueDisplayString(IParameterValueInt::Create(0), GBMP_TR(L"平铺")));
            res.emplace_back(IParameterValueDisplayString::CreateParameterValueDisplayString(IParameterValueInt::Create(1), GBMP_TR(L"延伸")));
            return res;
        }
        ADD_STATIC_VALUE_LIST_PARAMETER_DISPLAY(MaterialDisplayStyleBuiltInParameter, GetMaterialDisplayStyleValueList());

        ParameterValueDisplayStrings GetHorizontalAlignmentTypeValueList()
        {
            ParameterValueDisplayStrings res;
            res.emplace_back(IParameterValueDisplayString::CreateParameterValueDisplayString(IParameterValueInt::Create(0), GBMP_TR(L"左")));
            res.emplace_back(IParameterValueDisplayString::CreateParameterValueDisplayString(IParameterValueInt::Create(1), GBMP_TR(L"中")));
            res.emplace_back(IParameterValueDisplayString::CreateParameterValueDisplayString(IParameterValueInt::Create(2), GBMP_TR(L"右")));
            return res;
        }
        ADD_STATIC_VALUE_LIST_PARAMETER_DISPLAY(TextHorizontalAlignmentTypeBuiltInParameter, GetHorizontalAlignmentTypeValueList());

        ParameterValueDisplayStrings GetVerticalAlignmentTypeValueList()
        {
            ParameterValueDisplayStrings res;
            res.emplace_back(IParameterValueDisplayString::CreateParameterValueDisplayString(IParameterValueInt::Create(0), GBMP_TR(L"上")));
            res.emplace_back(IParameterValueDisplayString::CreateParameterValueDisplayString(IParameterValueInt::Create(1), GBMP_TR(L"中")));
            res.emplace_back(IParameterValueDisplayString::CreateParameterValueDisplayString(IParameterValueInt::Create(2), GBMP_TR(L"下")));
            return res;
        }
        ADD_STATIC_VALUE_LIST_PARAMETER_DISPLAY(TextVerticalAlignmentTypeBuiltInParameter, GetVerticalAlignmentTypeValueList());

        ParameterValueDisplayStrings GetLinearArrayModeValueList()
        {
            ParameterValueDisplayStrings res;
            res.emplace_back(IParameterValueDisplayString::CreateParameterValueDisplayString(IParameterValueInt::Create(0), GBMP_TR(L"间隔距离")));
            res.emplace_back(IParameterValueDisplayString::CreateParameterValueDisplayString(IParameterValueInt::Create(1), GBMP_TR(L"整体距离")));
            return res;
        }
        ADD_STATIC_VALUE_LIST_PARAMETER_DISPLAY(LinearArrayModeBuiltInParameter, GetLinearArrayModeValueList());

        ParameterValueDisplayStrings GetRadialArrayModeValueList()
        {
            ParameterValueDisplayStrings res;
            res.emplace_back(IParameterValueDisplayString::CreateParameterValueDisplayString(IParameterValueInt::Create(0), GBMP_TR(L"间隔角度")));
            res.emplace_back(IParameterValueDisplayString::CreateParameterValueDisplayString(IParameterValueInt::Create(1), GBMP_TR(L"整体角度")));
            return res;
        }
        ADD_STATIC_VALUE_LIST_PARAMETER_DISPLAY(RadialArrayModeBuiltInParameter, GetRadialArrayModeValueList());
     }
}
